Regresión Lineal Múltiple (RLM) ------------------------------- En la regresión lineal múltiple tenemos más de una variable regresora o independiente. Este modelo se representa por la siguiente fórmula: .. math:: y = \beta_0+\beta_1 x_1 +\beta_2 x_2 + ... + \beta_k x_x +\varepsilon Donde, :math:`y`: variable dependiente o variable respuesta. :math:`x_j`: variables independientes o regresoras. También llamadas variables explicativas. :math:`\beta_j`: coeficientes de regresión. :math:`k`: cantidad de variables regresoras o explicativas. :math:`\varepsilon`: error El modelo de regresión lineal múltiple con :math:`k` regresores es un hiperplano en el espacio :math:`k` dimensiones. El parámetro :math:`\beta_j` representa el cambio esperado en la variable :math:`y` por un cambio unitario de :math:`x_j` cuando las demás variables explicativas :math:`x_i` :math:`(i \neq i` se mantienen constantes. Por esta razón, los :math:`\beta_j` se pueden llamar coeficientes de regresión parcial. Este modelo es lineal porque la ecuación es una función lineal de los parámetros desconocidos :math:`\beta_j`. Los parámetros se pueden estimar a partir de datos muestrales. La siguiente tabla muestra la forma de los datos para :math:`n` observaciones, :math:`k` variables independientes y una &y& variable dependiente. En este modelo se supone que :math:`n>k`, :math:`E(\varepsilon) = 0`, :math:`Var(\varepsilon)= \sigma^2` y que los errores no están correlacionados. .. figure:: Tabla.JPG :alt: Tabla Tabla Con los datos muestrales, el modelo se puede expresar de la siguiente forma: .. math:: y_i = \beta_0 + \sum_{j=1}^k {\beta_j x_{ij}} + \varepsilon_i Mínimo cuadrados: ~~~~~~~~~~~~~~~~~ El método de mínimos cuadrado se aplica para estimar los coeficientes de regresión :math:`(\beta_j)`. La función de mínimos cuadrados es: .. math:: S(\beta_0,\beta_1,...,\beta_k)=\sum_{i=i}^n{\varepsilon_i^2} .. math:: S(\beta_0,\beta_1,...,\beta_k)=\sum_{i=1}^n{(y_i-\beta_0-\sum_{j=1}^k {\beta_j x_{ij}})^2} El objetivo es minimizar la función :math:`S` respecto a los Betas. El modelo de regresión lineal múltiple se puede expresar en forma matricial: .. math:: y = X\beta+\varepsilon Donde, :math:`y = \begin{bmatrix} y_1 \\ y_2 \\ . \\ y_n \end{bmatrix}, X = \begin{bmatrix} 1 & x_{11} & x_{12} & ... & x_{1k} \\ 1 & x_{21} & x_{22} & ... & x_{2k} \\ . & . & . & ... & . \\ 1 & x_{n1} & x_{n2} & ... & x_{nk} \end{bmatrix}` :math:`\beta=\begin{bmatrix} \beta_0 \\ \beta_1 \\ . \\ \beta_k \end{bmatrix}, \varepsilon = \begin{bmatrix} \varepsilon_1 \\ \varepsilon_1 \\ . \\ \varepsilon_n \end{bmatrix}` :math:`y` es un vector de :math:`n\times 1`. :math:`X` es una matriz de :math:`n\times p`. :math:`p` cantidad de variables regresoras. :math:`\beta` es un vector de :math:`p\times 1`. :math:`\varepsilon` es un vector de :math:`n\times 1`. **Estimación de los Betas:** Con el método de mínimos cuadrados se busca determinar el vector :math:`\hat{\beta}` que minimice la ecuación de :math:`S`. En forma matricial este vector se halla así: .. math:: \hat{\beta} = (X^´X)^{-1}X^´y Donde :math:`X^´` es la transpuesta de la matriz :math:`X`. Se obtiene una solución si existe la inversa de :math:`(X^´X)^{-1}`. Esta matriz existe si las regresoras son linealmente independientes, esto es, que ninguna columna de :math:`X` sea una combinación lineal de las demás columnas. El modelo de regresión ajustado se expresa con la siguiente ecuación: .. math:: \hat y = x^´\hat{\beta} = \hat{\beta_0}+\sum_{j=1}^k{\hat{\beta_j}x_j} El residual es la diferencia entre el valor observado, :math:`y_i`, y el valor ajustado :math:`\hat y` así: :math:`\hat{\varepsilon_i} = y_i-\hat{y_i}`. Para :math:`n` observaciones se tiene :math:`n` residuales. Código en R: ~~~~~~~~~~~~ .. code:: r datos = read.csv("DatosCafe.csv", sep = ";", dec = ",", header = T) print(head(datos)) .. parsed-literal:: Fecha PrecioInterno PrecioInternacional Producción Exportaciones TRM 1 ene-00 371375 130.12 658 517 1923.57 2 feb-00 354297 124.72 740 642 1950.64 3 mar-00 360016 119.51 592 404 1956.25 4 abr-00 347538 112.67 1055 731 1986.77 5 may-00 353750 110.31 1114 615 2055.69 6 jun-00 341688 100.30 1092 869 2120.17 EUR 1 1916.0 2 1878.5 3 1875.0 4 1832.0 5 1971.5 6 2053.5 .. code:: r dim(datos) .. raw:: html
  1. 264
  2. 7
**Matriz de correlaciones:** ``install.packages("PerformanceAnalytics")`` .. code:: r library(PerformanceAnalytics) .. parsed-literal:: Warning message: "package 'PerformanceAnalytics' was built under R version 4.1.3" Loading required package: xts Warning message: "package 'xts' was built under R version 4.1.3" Loading required package: zoo Warning message: "package 'zoo' was built under R version 4.1.3" Attaching package: 'zoo' The following objects are masked from 'package:base': as.Date, as.Date.numeric Attaching package: 'PerformanceAnalytics' The following object is masked from 'package:graphics': legend .. code:: r chart.Correlation(datos[,2:7]) .. image:: output_17_0.png :width: 420px :height: 420px **Ajuste del modelo 1:** .. math:: y = \beta_0+\beta_1 x_1 +\beta_2 x_2 + +\beta_3 x_3 + +\beta_4 x_4 + +\beta_5 x_5 +\varepsilon .. math:: Exportaciones = \beta_0+\beta_1Producción +\beta_2 PrecioInternacional +\beta_3 PrecioInterno ++\beta_4TRM +\beta_5 EUR +\varepsilon .. code:: r regression <- lm(Exportaciones ~ Producción + PrecioInternacional + PrecioInterno + TRM + EUR, data = datos) regression .. parsed-literal:: Call: lm(formula = Exportaciones ~ Producción + PrecioInternacional + PrecioInterno + TRM + EUR, data = datos) Coefficients: (Intercept) Producción PrecioInternacional 2.800e+02 5.806e-01 -1.045e+00 PrecioInterno TRM EUR 1.878e-04 -3.049e-02 5.335e-02 .. code:: r summary(regression) .. parsed-literal:: Call: lm(formula = Exportaciones ~ Producción + PrecioInternacional + PrecioInterno + TRM + EUR, data = datos) Residuals: Min 1Q Median 3Q Max -507.57 -73.29 -2.66 74.68 400.44 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 2.800e+02 1.172e+02 2.390 0.0176 * Producción 5.806e-01 3.284e-02 17.681 <2e-16 *** PrecioInternacional -1.045e+00 6.248e-01 -1.673 0.0956 . PrecioInterno 1.878e-04 1.311e-04 1.432 0.1533 TRM -3.049e-02 5.367e-02 -0.568 0.5704 EUR 5.335e-02 2.725e-02 1.958 0.0513 . --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 121.1 on 258 degrees of freedom Multiple R-squared: 0.7055, Adjusted R-squared: 0.6998 F-statistic: 123.6 on 5 and 258 DF, p-value: < 2.2e-16 **Coeficientes:** .. code:: r print(regression$coefficients) .. parsed-literal:: (Intercept) Producción PrecioInternacional PrecioInterno 2.800080e+02 5.806015e-01 -1.045120e+00 1.877758e-04 TRM EUR -3.049381e-02 5.335477e-02 **Residuales:** .. code:: r print(head(regression$residuals)) .. parsed-literal:: 1 2 3 4 5 6 -122.35878 -44.57864 -202.81077 -146.20990 -305.43969 -49.27200 .. code:: r print(length(regression$residuals)) .. parsed-literal:: [1] 264 **Ajuste del modelo 2:** .. math:: Exportaciones = \beta_0+\beta_1Producción +\beta_2 PrecioInternacional +\beta_3 EUR +\varepsilon .. code:: r regression <- lm(Exportaciones ~ Producción + PrecioInternacional + EUR, data = datos) summary(regression) .. parsed-literal:: Call: lm(formula = Exportaciones ~ Producción + PrecioInternacional + EUR, data = datos) Residuals: Min 1Q Median 3Q Max -508.69 -75.56 1.87 72.06 423.92 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 133.89907 43.16546 3.102 0.00213 ** Producción 0.59395 0.03210 18.502 < 2e-16 *** PrecioInternacional -0.25609 0.13838 -1.851 0.06535 . EUR 0.07345 0.01321 5.560 6.69e-08 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 121.4 on 260 degrees of freedom Multiple R-squared: 0.7017, Adjusted R-squared: 0.6982 F-statistic: 203.8 on 3 and 260 DF, p-value: < 2.2e-16 **Ajuste del modelo 3:** .. math:: Exportaciones = \beta_0+\beta_1Producción +\beta_2 EUR +\varepsilon .. code:: r regression <- lm(Exportaciones ~ Producción + EUR, data = datos) summary(regression) .. parsed-literal:: Call: lm(formula = Exportaciones ~ Producción + EUR, data = datos) Residuals: Min 1Q Median 3Q Max -512.46 -81.73 -2.56 78.98 441.24 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 97.73831 38.66817 2.528 0.0121 * Producción 0.61093 0.03091 19.767 < 2e-16 *** EUR 0.06732 0.01285 5.240 3.32e-07 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 122 on 261 degrees of freedom Multiple R-squared: 0.6977, Adjusted R-squared: 0.6954 F-statistic: 301.2 on 2 and 261 DF, p-value: < 2.2e-16